package com.zkh.myframe.server.tomcat.websocket;

import javax.websocket.Session;

import org.apache.tomcat.websocket.AuthenticationException;

/**
 * 自定义WebSocket
 * @author zkh
 */
public interface WebSocket {

	/**
	 * 权限认证，返回用户唯一标识。如果鉴权失败，抛出异常即可。
	 * @param session 会话对象
	 * @return 用户唯一标识
	 */
	public String authentication(Session session) throws AuthenticationException;
	
	/**
	 * 接收到消息的处理方式。最终发送消息方法：<br>
	 * <b>WebSocketUtils.sendMessage(String branchId, String message, String... userKeys)</b>
	 * @param message 消息对象
	 */
	public void receivedMessage(WebSocketMessage message);

	/**
	 * 自定义处理异常
	 * @param session 会话
	 * @param error 抛出的异常
	 * @param userKey 当前会话用户
	 */
	public void cacheError(Session session, Throwable error, String userKey);
}
